带你认识 flask 的模板(3) | 您所在的位置:网站首页 › flask之模板html中调用python函数方法 › 带你认识 flask 的模板(3) |
本站最新发布 Python从入门到精通|Python基础教程
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
条件语句
在渲染过程中使用实际值替换占位符,只是Jinja2在模板文件中支持的诸多强大操作之一。模板也支持在{%...%}块内使用控制语句。 index.html模板的下一个版本添加了一个条件语句: {% if title %} {{ title }} - Microblog {% else %} Welcome to Microblog! {% endif %} Hello, {{ user.username }}!
现在,模板变得聪明点儿了,如果视图函数忘记给渲染函数传入一个名为title的关键字参数,那么模板将显示一个默认的标题,而不是显示一个空的标题。你可以通过在视图函数的render_template()调用中去除title参数来试试这个条件语句是如何生效的。
登录后的用户可能想要在主页上查看其他用户的最新动态,针对这个需求,我现在要做的是丰富这个应用来满足它。 我将会故技重施,使用模拟对象的把戏来创建一些模拟用户和动态: from flask import render_templatefrom app import [email protected]('/')@app.route('/index')def index(): user = {'username': 'Miguel'} posts = [ { 'author': {'username': 'John'}, 'body': 'Beautiful day in Portland!' }, { 'author': {'username': 'Susan'}, 'body': 'The Avengers movie was so cool!' } ] return render_template('index.html', title='Home', user=user, posts=posts)
我使用了一个列表来表示用户动态,其中每个元素是一个具有author和body字段的字典。未来设计用户和其动态时,我将尽可能地保留这些字段名称,以便在使用真实用户和其动态的时候不会出现问题。 在模板方面,我必须解决一个新问题。用户动态列表拥有的元素数量由视图函数决定。那么模板不能对有多少个用户动态进行任何假设,因此需要准备好以通用方式渲染任意数量的用户动态。 Jinja2提供了for控制结构来应对这类问题: {% if title %} {{ title }} - Microblog {% else %} Welcome to Microblog {% endif %} Hi, {{ user.username }}! {% for post in posts %} {{ post.author.username }} says: {{ post.body }} {% endfor %}
|
CopyRight 2018-2019 实验室设备网 版权所有 |